package br.com.esporte.apresentacao;

import java.io.Serializable;

import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;

import br.com.esporte.negocios.controladores.IControlador;
import br.com.esporte.negocios.entidades.Entidade;
import br.com.esporte.repositorio.filtro.IFiltro;

public abstract class PaginaEntidade<ENTIDADE extends Entidade, ID extends Serializable, FILTRO extends IFiltro<ENTIDADE>, CONTROLADOR extends IControlador<ENTIDADE, ID, FILTRO>>
		extends PaginaGenerica implements
		IPaginaEntidade<ENTIDADE, ID, CONTROLADOR, FILTRO> {

	private IModel<ENTIDADE> model;

	private ENTIDADE vo;

	public PaginaEntidade() {
		super();
	}

	public PaginaEntidade(ENTIDADE vo) {
		super();
		this.setVo(vo);
	}

	@Override
	public abstract void criarAcaoEditar();

	@Override
	public abstract void criarAcaoInserir();

	@Override
	public abstract void criarAcaoLimpar();

	@Override
	public abstract void criarAcaoListar();

	@Override
	public abstract void criarAcaoRemover();

	public IModel<ENTIDADE> getModel() {
		if (model == null) {
			model = new Model<ENTIDADE>(this.getVo());
		}
		return model;
	}

	public ENTIDADE getVo() {
		return vo;
	}

	@Override
	public abstract void montarPagina();

	public void setModel(IModel<ENTIDADE> model) {
		this.model = model;
	}

	public void setVo(ENTIDADE vo) {
		this.vo = vo;
	}

}
